package com.springboot.onlinemusicserver.service;

import com.springboot.onlinemusicserver.model.Music;
import com.springboot.onlinemusicserver.utils.common.Result;
import com.springboot.onlinemusicserver.utils.req.GetMusicParam;
import com.springboot.onlinemusicserver.utils.req.UserLoginParam;
import com.springboot.onlinemusicserver.utils.req.UserRegisterParam;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.http.ResponseEntity;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * Created with IntelliJ IDEA.
 * Description :
 * User: jiume
 * Date: 2025-05-18
 * Time: 19:03
 */
public interface MusicService {

    /**
     * 音乐文件上传逻辑
     * @param singer 歌手
     * @param file 音乐文件
     * @param request 获取当前登录用户的user_id
     * @return 是否上传成功
     */
    Result<Boolean> upload(String singer, MultipartFile file,
                           HttpServletRequest request);

    /**
     * 获取音乐文件信息
     * @param path 音乐文件路径信息
     * @return 音乐文件的字节流信息
     */
    ResponseEntity<byte[]> getMusic(String path);

    /**
     * 删除单个音乐文件
     * @param musicId 音乐Id
     * @return 是否删除成功
     */
    Result<Boolean> deleteMusic(Long musicId);

    /**
     * 批量删除音乐文件
     * @param musicIds 音乐Id集合
     * @return 是否删除成功
     */
    Result<Boolean> deleteBatchMusic(List<Long> musicIds);

    /**
     * 查询音乐
     * @param selectName 查询参数
     * @return 查询的结果
     */
    Result<List<Music>> selectMusicList(String selectName);
}
